<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        function getQueryString(){for(var d,a={},b=location.search.slice(1),c=/([^&=]+)=([^&]*)/g;d=c.exec(b);)a[decodeURIComponent(d[1])]=decodeURIComponent(d[2]);return a};

        function goto(url){
            window.location.href = url;
        }

        var type=getQueryString().type;
        if(type ==='simple') {
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=%20const%20%20%7B%20Stage%2C%20Curve%2C%20motion%20%7D%20%3D%20curvejs%0A%0A%20%20%20%20let%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%0A%20%20%20%20let%20stage%20%3D%20new%20Stage(canvas)%0A%0A%20%20%20%20const%20rd%20%3D%20function()%20%7B%0A%20%20%20%20%20%20%20%20return%20-2%20%2B%20Math.random()%20*%202%0A%20%20%20%20%7D%0A%0A%20%20%20%20let%20curve%20%3D%20new%20Curve(%7B%0A%20%20%20%20%20%20%20%20color%3A%20%27%2300FF00%27%2C%0A%20%20%20%20%20%20%20%20points%3A%20%5B277%2C%20327%2C%20230%2C%20314%2C%20236%2C%20326%2C%20257%2C%20326%5D%2C%0A%20%20%20%20%20%20%20%20data%3A%20%5Brd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%5D%2C%0A%20%20%20%20%20%20%20%20motion%3A%20function%20motion(points%2C%20data)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20points.forEach(function%20(item%2C%20index)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%2B%3D%20data%5Bindex%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(index%20%25%202%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3E%20canvas.width)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3E%20canvas.height)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%0A%0A%20%20%20%20stage.add(curve)')
        }else if(type==='noise'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20%20%7B%20Stage%2C%20Curve%2C%20motion%2C%20color%20%7D%20%3D%20curvejs%0A%0Alet%20stage%20%3D%20new%20Stage(document.getElementById(%27myCanvas%27))%0A%0Alet%20curve%20%3D%20new%20Curve(%7B%0A%20%20%20%20data%3A%20%7Bvalue%3A%200%2C%20step%3A%200.01%2C%20width%3A%20600%2C%20height%3A%20400%7D%2C%0A%20%20%20%20motion%3A%20motion.noise%0A%7D)%0A%0Astage.add(curve)%0A%0Alet%20percent%20%3D%200%2C%0A%20%20%20%20step%20%3D%201%0A%0AsetInterval(()%3D%3E%7B%0A%20%20%20%20curve.color%20%3D%20color.lerp(%27red%27%2C%20%27green%27%2C%20percent%20%2B%3D%20step)%0A%20%20%20%20if(percent%20%3D%3D%3D%200%20%7C%7C%20percent%20%3D%3D%3D%20100)%20step%20*%3D%20-1%0A%7D%2C30)')
        }else if(type==='simple-es5'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=var%20Stage%20%3D%20curvejs.Stage%2C%0A%20%20%20%20Curve%20%3D%20curvejs.Curve%2C%0A%20%20%20%20motion%20%3D%20curvejs.motion%2C%0A%20%20%20%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%2C%0A%20%20%20%20stage%20%3D%20new%20Stage(canvas)%2C%0A%20%20%20%20rd%20%3D%20function()%20%7B%0A%20%20%20%20%20%20return%20-2%20%2B%20Math.random()%20*%202%0A%20%20%20%20%7D%0A%0Avar%20curve%20%3D%20new%20Curve(%7B%0A%20%20color%3A%20%27%2300FF00%27%2C%0A%20%20points%3A%20%5B277%2C%20327%2C%20230%2C%20314%2C%20236%2C%20326%2C%20257%2C%20326%5D%2C%0A%20%20data%3A%20%5Brd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%5D%2C%0A%20%20motion%3A%20function%20motion(points%2C%20data)%20%7B%0A%20%20%20%20points.forEach(function%20(item%2C%20index)%20%7B%0A%20%20%20%20%20%20points%5Bindex%5D%20%2B%3D%20data%5Bindex%5D%0A%0A%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%200%0A%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20if%20(index%20%25%202%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3E%20canvas.width)%20%7B%0A%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.width%0A%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3E%20canvas.height)%20%7B%0A%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.height%0A%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%0A%20%20%7D%0A%7D)%0A%0Astage.add(curve)')
        }else if(type==='curves'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20util%20%3D%20%7B%0A%0A%20%20%20%20random%3A%20function%20(min%2C%20max)%20%7B%0A%20%20%20%20%20%20%20%20return%20min%20%2B%20Math.floor(Math.random()%20*%20(max%20-%20min%20%2B%201))%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomColor%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20%5B%27%2322CAB3%27%2C%20%27%2390CABE%27%2C%20%27%23A6EFE8%27%2C%20%27%23C0E9ED%27%2C%20%27%23C0E9ED%27%2C%20%27%23DBD4B7%27%2C%20%27%23D4B879%27%2C%20%27%23ECCEB2%27%2C%20%27%23F2ADA6%27%2C%20%27%23FF7784%27%5D%5Butil.random(0%2C%209)%5D%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomSpeed%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20(Math.random()%20%3E%200.5%20%3F%201%20%3A%20-1)%20*%20Math.random()%20*%202%0A%20%20%20%20%7D%0A%0A%7D%0A%0A%0Aconst%20%20%7B%20Stage%2C%20Curve%2C%20motion%20%7D%20%3D%20curvejs%0A%0Alet%20lineCount%20%3D%205%2C%0A%20%20%20%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%2C%0A%20%20%20%20random%20%3D%20util.random%2C%0A%20%20%20%20randomColor%20%3D%20util.randomColor%2C%0A%20%20%20%20randomSpeed%20%3D%20util.randomSpeed%2C%0A%20%20%20%20stage%20%3D%20new%20Stage(canvas)%0A%0Afor%20(let%20i%20%3D%200%3B%20i%20%3C%20lineCount%3B%20i%2B%2B)%20%7B%0A%20%20stage.add(new%20Curve(%7B%0A%20%20%20%20points%3A%20%5Brandom(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%5D%2C%0A%20%20%20%20color%3A%20randomColor()%2C%0A%20%20%20%20data%3A%20%5Butil.randomSpeed()%2C%20util.randomSpeed()%2C%20util.randomSpeed()%2C%20util.randomSpeed()%2C%20util.randomSpeed()%2C%20util.randomSpeed()%2C%20util.randomSpeed()%2C%20util.randomSpeed()%5D%2C%0A%20%20%20%20motion%3A%20function%20motion(points%2C%20data)%20%7B%0A%20%20%20%20%20%20%20%20points.forEach(function%20(item%2C%20index)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%2B%3D%20data%5Bindex%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(index%20%25%202%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3E%20canvas.width)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3E%20canvas.height)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%7D%0A%20%20%7D))%0A%7D')
        }else if(type==='line'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20util%20%3D%20%7B%0A%0A%20%20%20%20random%3A%20function%20(min%2C%20max)%20%7B%0A%20%20%20%20%20%20%20%20return%20min%20%2B%20Math.floor(Math.random()%20*%20(max%20-%20min%20%2B%201))%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomColor%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20%5B%27%2322CAB3%27%2C%20%27%2390CABE%27%2C%20%27%23A6EFE8%27%2C%20%27%23C0E9ED%27%2C%20%27%23C0E9ED%27%2C%20%27%23DBD4B7%27%2C%20%27%23D4B879%27%2C%20%27%23ECCEB2%27%2C%20%27%23F2ADA6%27%2C%20%27%23FF7784%27%5D%5Butil.random(0%2C%209)%5D%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20return%20%27%23%27%2B(Math.random()*0xffffff%3C%3C0).toString(16)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomSpeed%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20(Math.random()%20%3E%200.5%20%3F%201%20%3A%20-1)%20*%20Math.random()%20*%202%0A%20%20%20%20%7D%0A%0A%7D%0A%0Aconst%20%20%7B%20Stage%2C%20Curve%2C%20motion%20%7D%20%3D%20curvejs%0A%0Alet%20lineCount%20%3D%205%2C%0A%20%20%20%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%2C%0A%20%20%20%20random%20%3D%20util.random%2C%0A%20%20%20%20randomColor%20%3D%20util.randomColor%2C%0A%20%20%20%20randomSpeed%20%3D%20util.randomSpeed%2C%0A%20%20%20%20stage%20%3D%20new%20Stage(canvas)%0A%0Afor%20(let%20i%20%3D%200%3B%20i%20%3C%20lineCount%3B%20i%2B%2B)%20%7B%0A%20%20stage.add(new%20Curve(%7B%0A%20%20%20%20points%3A%20%5Brandom(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%5D%2C%0A%20%20%20%20color%3A%20randomColor()%2C%0A%20%20%20%20motion%3A%20motion.line%0A%20%20%7D))%0A%7D')
        }else if(type==='rotate'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20util%20%3D%20%7B%0A%20%20%20%20random%3A%20function%20(min%2C%20max)%20%7B%0A%20%20%20%20%20%20%20%20return%20min%20%2B%20Math.floor(Math.random()%20*%20(max%20-%20min%20%2B%201))%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomColor%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20%5B%27%2322CAB3%27%2C%20%27%2390CABE%27%2C%20%27%23A6EFE8%27%2C%20%27%23C0E9ED%27%2C%20%27%23C0E9ED%27%2C%20%27%23DBD4B7%27%2C%20%27%23D4B879%27%2C%20%27%23ECCEB2%27%2C%20%27%23F2ADA6%27%2C%20%27%23FF7784%27%5D%5Butil.random(0%2C%209)%5D%3B%0A%20%20%20%20%7D%0A%7D%0A%0Aconst%20%20%7B%20Stage%2C%20Curve%2C%20motion%20%7D%20%3D%20curvejs%0A%0Alet%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%2C%0A%20%20%20%20randomColor%20%3D%20util.randomColor%2C%0A%20%20%20%20stage%20%3D%20new%20Stage(canvas)%0A%0A%20stage.add(new%20Curve(%7B%0A%20%20%20%20points%3A%20%5B378%2C123%2C297%2C97%2C209%2C174%2C217%2C258%5D%2C%0A%20%20%20%20color%3A%20randomColor()%2C%0A%20%20%20%20motion%3A%20motion.rotate%2C%0A%20%20%20%20data%3A%20Math.PI%2F20%0A%20%20%7D))%0A%0A%20stage.add(new%20Curve(%7B%0A%20%20%20%20points%3A%20%5B378%2C123%2C385%2C195%2C293%2C279%2C217%2C258%5D%2C%0A%20%20%20%20color%3A%20randomColor()%2C%0A%20%20%20%20motion%3A%20motion.rotate%2C%0A%20%20%20%20data%3A%20Math.PI%2F20%0A%20%20%7D))')
        }else if(type==='close'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20util%20%3D%20%7B%0A%0A%20%20%20%20random%3A%20function%20(min%2C%20max)%20%7B%0A%20%20%20%20%20%20%20%20return%20min%20%2B%20Math.floor(Math.random()%20*%20(max%20-%20min%20%2B%201))%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomColor%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20%5B%27%2322CAB3%27%2C%20%27%2390CABE%27%2C%20%27%23A6EFE8%27%2C%20%27%23C0E9ED%27%2C%20%27%23C0E9ED%27%2C%20%27%23DBD4B7%27%2C%20%27%23D4B879%27%2C%20%27%23ECCEB2%27%2C%20%27%23F2ADA6%27%2C%20%27%23FF7784%27%5D%5Butil.random(0%2C%209)%5D%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20return%20%27%23%27%2B(Math.random()*0xffffff%3C%3C0).toString(16)%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomSpeed%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20(Math.random()%20%3E%200.5%20%3F%201%20%3A%20-1)%20*%20Math.random()%20*%202%0A%20%20%20%20%7D%0A%0A%7D%0A%0Aconst%20%20%7B%20Stage%2C%20Curve%2C%20motion%20%7D%20%3D%20curvejs%0A%0Alet%20lineCount%20%3D%205%2C%0A%20%20%20%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%2C%0A%20%20%20%20random%20%3D%20util.random%2C%0A%20%20%20%20randomColor%20%3D%20util.randomColor%2C%0A%20%20%20%20randomSpeed%20%3D%20util.randomSpeed%2C%0A%20%20%20%20stage%20%3D%20new%20Stage(canvas)%0A%0Afor%20(let%20i%20%3D%200%3B%20i%20%3C%20lineCount%3B%20i%2B%2B)%20%7B%0A%20%20stage.add(new%20Curve(%7B%0A%20%20%20%20points%3A%20%5Brandom(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%2C%20random(10%2C%20canvas.width%20-%2010)%2C%20random(10%2C%20canvas.height%20-%2010)%5D%2C%0A%20%20%20%20color%3A%20randomColor()%2C%0A%20%20%20%20motion%3A%20motion.close%0A%20%20%7D))%0A%7D')
        }else if(type==='points-to'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20%20%7B%20Stage%2C%20Curve%2C%20motion%20%7D%20%3D%20curvejs%0A%0Alet%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%0Alet%20stage%20%3D%20new%20Stage(canvas)%0A%0Aconst%20data%20%3D%20%5B%0A%20%20%20%20%5B70%2C70%2C12%2C76%2C12%2C123%2C70%2C128%5D%2C%0A%20%20%20%20%5B25%2C68%2C23%2C140%2C80%2C140%2C74%2C100%5D%2C%0A%20%20%20%20%5B73%2C62%2C72%2C90%2C75%2C110%2C93%2C134%5D%2C%0A%20%20%20%20%5B21%2C62%2C21%2C62%2C21%2C128%2C21%2C128%5D%2C%0A%20%20%20%20%5B21%2C128%2C17%2C96%2C17%2C68%2C65%2C60%5D%2C%0A%20%20%20%20%5B12%2C58%2C41%2C132%2C61%2C132%2C96%2C58%5D%2C%0A%20%20%20%20%5B44%2C104%2C112%2C52%2C-20%2C82%2C77%2C136%5D%2C%0A%20%20%20%20%5B52%2C48%2C53%2C48%2C54%2C49%2C52%2C48%5D%2C%0A%20%20%20%20%5B8%2C175%2C24%2C204%2C60%2C197%2C56%2C74%5D%2C%0A%20%20%20%20%5B81%2C72%2C17%2C42%2C105%2C145%2C41%2C120%5D%0A%5D%0Aconst%20position%20%3D%20%5B0%2C0%2C60%2C0%2C60%2C0%2C145%2C0%2C145%2C0%2C210%2C10%2C280%2C-5%2C350%2C0%2C350%2C0%2C400%2C0%20%5D%0Aconst%20colors%20%3D%20%5B%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%23FF7784%27%2C%27%23FF7784%27%2C%27%23FF7784%27%5D%0Aconst%20rd%20%3D%20function()%20%7B%0A%20%20%20%20return%20-2%20%2B%20Math.random()%20*%202%0A%7D%0A%0Aconst%20rdX%20%3D%20function()%20%7B%0A%20%20%20%20return%2010%20%2B%20Math.floor(Math.random()%20*%20(canvas.width%20-%2020%20%2B%201))%0A%7D%0A%0Aconst%20rdY%20%3D%20function()%20%7B%0A%20%20%20%20return%2010%20%2B%20Math.floor(Math.random()%20*%20(canvas.height%20-%2020%20%2B%201))%0A%7D%0A%0Aconst%20motionFn%20%3D%20function%20motion(points%2C%20data)%20%7B%0A%20%20%20%20points.forEach((item%2C%20index)%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20points%5Bindex%5D%20%2B%3D%20data%5Bindex%5D%0A%0A%0A%20%20%20%20%20%20%20%20if%20(index%20%25%202%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%2B%20this.x%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20-this.x%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%2B%20this.x%20%3E%20canvas.width)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.width%20-%20this.x%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%2B%20this.y%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20-this.y%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%2B%20this.y%20%3E%20canvas.height)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.height%20-%20this.y%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%0A%7D%0A%0Aconst%20dance%20%3D%20function()%7B%0A%20%20%20%20stage.children.forEach((child%20%2Cindex)%3D%3E%7B%0A%20%20%20%20%20%20%20%20child.pause()%0A%20%20%20%20%20%20%20%20child.pointsTo(data%5Bindex%5D%2C2000%2C%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20end%3Afunction()%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout(()%3D%3E%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.play()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C3000)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%7D)%0A%7D%0A%0A%0A%3B(function%20main()%7B%0A%20%20%20%20for(let%20i%20%3D%200%20%3Bi%20%3C%2010%3B%20i%2B%2B)%20%7B%0A%0A%20%20%20%20%20%20%20%20let%20curve%20%3D%20new%20Curve(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20position%5Bi%20*%202%5D%20%2B%2030%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20position%5Bi%20*%202%20%2B%201%5D%20%2B%2080%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20colors%5Bi%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20points%3A%20%5BrdX()%2C%20rdY()%2C%20rdX()%2C%20rdY()%2C%20rdX()%2C%20rdY()%2C%20rdX()%2C%20rdY()%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20motion%3A%20motionFn%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20data%3A%20%5Brd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%5D%2C%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%20%20stage.add(curve)%0A%20%20%20%20%7D%0A%0A%20%20%20%20setTimeout(()%3D%3Edance()%2C2000)%0A%20%20%20%20setInterval(()%3D%3Edance()%2C10000)%0A%7D)()')
        }else if(type==='color'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20%20%7B%20Stage%2C%20Curve%2C%20motion%2C%20color%20%7D%20%3D%20curvejs%0A%0Alet%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%0Alet%20stage%20%3D%20new%20Stage(canvas)%0A%0Aconst%20rd%20%3D%20function()%20%7B%0A%20%20%20%20return%20-2%20%2B%20Math.random()%20*%202%0A%7D%0A%0Alet%20curve%20%3D%20new%20Curve(%7B%0A%20%20%20%20color%3A%20%27%2300FF00%27%2C%0A%20%20%20%20points%3A%20%5B277%2C%20327%2C%20230%2C%20314%2C%20236%2C%20326%2C%20257%2C%20326%5D%2C%0A%20%20%20%20data%3A%20%5Brd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%5D%2C%0A%20%20%20%20motion%3A%20function%20motion(points%2C%20data)%20%7B%0A%20%20%20%20%20%20%20%20points.forEach(function%20(item%2C%20index)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%2B%3D%20data%5Bindex%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(index%20%25%202%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3E%20canvas.width)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.width%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%3E%20canvas.height)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.height%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20*%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%7D%0A%7D)%0A%0Astage.add(curve)%0A%0Alet%20percent%20%3D%200%2C%0A%20%20%20%20step%20%3D%201%0A%0AsetInterval(%20()%3D%3E%7B%0A%20%20%20%20curve.color%20%3D%20color.lerp(%27red%27%2C%27blue%27%2Cpercent)%0A%20%20%20%20percent%2B%3Dstep%0A%20%20%20%20if(percent%3D%3D%3D100%20%7C%7C%20percent%3D%3D%3D0)%20step%20*%3D%20-1%0A%0A%7D%2C50)')
        }else if(type === 'scale'){
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20%20%7B%20Stage%2C%20Curve%2C%20motion%20%7D%20%3D%20curvejs%0A%0Alet%20canvas%20%3D%20document.getElementById(%27myCanvas%27)%0Alet%20stage%20%3D%20new%20Stage(canvas)%0A%0Alet%20data%20%3D%20%5B%0A%20%20%20%20%5B75%2C40%2C75%2C37%2C70%2C25%2C50%2C25%5D%2C%0A%20%20%20%20%5B50%2C25%2C20%2C25%2C20%2C62.5%2C20%2C62.5%5D%2C%0A%20%20%20%20%5B20%2C62.5%2C20%2C80%2C40%2C102%2C75%2C120%5D%2C%0A%20%20%20%20%5B75%2C120%2C110%2C102%2C130%2C80%2C130%2C62.5%5D%2C%0A%20%20%20%20%5B130%2C62.5%2C130%2C62.5%2C130%2C25%2C100%2C25%5D%2C%0A%20%20%20%20%5B100%2C25%2C85%2C25%2C75%2C37%2C75%2C40%5D%0A%5D%0A%0A%0Afunction%20dance(child%2C%20scale)%20%7B%0A%20%20%20%20child.scaleTo(scale%2C%202000%2C%20%7B%0A%20%20%20%20%20%20%20%20center%3A%20%5B85%2C80%5D%2C%0A%20%20%20%20%20%20%20%20end%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20setTimeout(()%3D%3E%7B%0A%20%20%20%20%20%20%20%20%20%20%09dance(this%2C%20scale%20%3D%3D%3D%202%20%3F%200.5%20%3A%202)%0A%20%20%20%20%20%20%20%20%20%20%7D%2C500)%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%0A%7D%0A%0A%0Afor(let%20i%20%3D%200%20%3Bi%20%3C%206%3B%20i%2B%2B)%20%7B%0A%20%20let%20curve%20%3D%20new%20Curve(%7B%0A%20%20%20%20x%3A200%2C%0A%20%20%20%20y%3A100%2C%0A%20%20%20%20color%3A%20%27red%27%2C%0A%20%20%20%20points%3Adata%5Bi%5D%0A%20%20%7D)%0A%20%20stage.add(curve)%0A%7D%0A%0Astage.children.forEach((child)%3D%3E%7B%0A%20%20dance(child%2C%202)%0A%7D)')
        }else{
            goto('https://alloyteam.github.io/curvejs/pg/index.html?code=const%20util%20%3D%20%7B%0A%0A%20%20%20%20random%3A%20function%20(min%2C%20max)%20%7B%0A%20%20%20%20%20%20%20%20return%20min%20%2B%20Math.floor(Math.random()%20*%20(max%20-%20min%20%2B%201))%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomColor%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20%5B%27%2322CAB3%27%2C%20%27%2390CABE%27%2C%20%27%23A6EFE8%27%2C%20%27%23C0E9ED%27%2C%20%27%23C0E9ED%27%2C%20%27%23DBD4B7%27%2C%20%27%23D4B879%27%2C%20%27%23ECCEB2%27%2C%20%27%23F2ADA6%27%2C%20%27%23FF7784%27%5D%5Butil.random(0%2C%209)%5D%3B%0A%20%20%20%20%7D%2C%0A%0A%20%20%20%20randomSpeed%3A%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20return%20(Math.random()%20%3E%200.5%20%3F%201%20%3A%20-1)%20*%20Math.random()%20*%202%0A%20%20%20%20%7D%0A%0A%7D%0A%0Aconst%20%20%7B%20Stage%2C%20Word%2C%20motion%20%7D%20%3D%20curvejs%0A%0Alet%20lineCount%20%3D%2010%2C%0A%20%20%20%20random%20%3D%20util.random%2C%0A%20%20%20%20randomColor%20%3D%20util.randomColor%2C%0A%20%20%20%20randomSpeed%20%3D%20util.randomSpeed%2C%0A%09%09canvas%20%3D%20document.getElementById(%27myCanvas%27)%2C%0A%20%09%09stage%20%3D%20new%20Stage(canvas)%0A%0Astage.add(new%20Word(%27c%27%2C%7B%0A%20%20color%3A%20%27%2322CAB3%27%2C%0A%20%20motion%3A%20motion.dance%2C%0A%20%20data%3A%20%7Bangle%3A%200%2C%20r%3A5%20%2Cstep%3AMath.PI%20%2F%2050%20%7D%0A%0A%7D))%0A%0A%0Astage.add(new%20Word(%27u%27%2C%7B%0A%20%20color%3A%20%27%2322CAB3%27%2C%0A%20%20x%3A60%2C%0A%20%20motion%3A%20motion.dance%2C%0A%20%20data%3A%20%7Bangle%3A%200%2C%20r%3A5%20%2Cstep%3AMath.PI%20%2F%2050%20%7D%0A%7D))%0A%0Astage.add(new%20Word(%27r%27%2C%7B%0A%20%20color%3A%20%27%2322CAB3%27%2C%0A%20%20x%3A145%2C%0A%20%20motion%3A%20motion.dance%2C%0A%20%20data%3A%20%7Bangle%3A%200%2C%20r%3A5%20%2Cstep%3AMath.PI%20%2F%2050%20%7D%0A%7D))%0A%0Astage.add(new%20Word(%27v%27%2C%7B%0A%20%20color%3A%20%27%2322CAB3%27%2C%0A%20%20x%3A210%2C%0A%20%20y%3A10%2C%0A%20%20motion%3A%20motion.dance%2C%0A%20%20data%3A%20%7Bangle%3A%200%2C%20r%3A5%20%2Cstep%3AMath.PI%20%2F%2050%20%7D%0A%7D))%0A%0Astage.add(new%20Word(%27e%27%2C%7B%0A%20%20color%3A%20%27%2322CAB3%27%2C%0A%20%20x%3A280%2C%0A%20%20y%3A-5%2C%0A%20%20motion%3A%20motion.dance%2C%0A%20%20data%3A%20%7Bangle%3A%200%2C%20r%3A5%20%2Cstep%3AMath.PI%20%2F%2050%20%7D%0A%7D))%0A%0Astage.add(new%20Word(%27j%27%2C%7B%0A%20%20color%3A%20%27%23FF7784%27%2C%0A%20%20x%3A350%2C%0A%20%20motion%3A%20motion.dance%2C%0A%20%20data%3A%20%7Bangle%3A%200%2C%20r%3A5%20%2Cstep%3AMath.PI%20%2F%2050%20%7D%0A%7D))%0A%0Astage.add(new%20Word(%27s%27%2C%7B%0A%20%20color%3A%20%27%23FF7784%27%2C%0A%20%20x%3A400%2C%0A%20%20motion%3A%20motion.dance%2C%0A%20%20data%3A%20%7Bangle%3A%200%2C%20r%3A5%20%2Cstep%3AMath.PI%20%2F%2050%20%7D%0A%7D))')
        }
    </script>
</head>
<body>

</body>
</html>


